// pages/songDetail/songDetail.js
import request from '../../utils/request'
import Pubsub from 'pubsub-js'
import moment from 'moment'
//获取全局实例
const appInstance=getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
isPlay:false, //是否正在播放
song:{},
musciLink:'',//音乐链接
currentTime:"00:00",
durationTime:"00:00" ,
currentWidth:0//实时进度条宽度
},
//点击播放
  handleMusciPlay(){
// this.setData({
//   isPlay:!this.data.isPlay
// })
let isPlay = !this.data.isPlay
this.musciControl(isPlay,this.data.song.id,this.data.musciLink)
},
//点击切换
handleSwitch(event){
this.backgroundAudioManger.stop()
let type =event.currentTarget.id
console.log(type);
//订阅来自top页面发布的music消息
Pubsub.subscribe('musicId',(msg,musicId)=>{
  //获取歌曲详情
  this.getMusicInfo(musicId)
  //自动播放当前的音乐
  this.musciControl(true,musicId)
  //取消订阅
Pubsub.unsubscribe('musicId')
})


//发布订阅
Pubsub.publish("switch",type)
},
//控制音乐播放/暂停的功能函数
async musciControl(isPlay,musciId,musciLink){ 
if(isPlay){
if(!musciLink){
    //获取音乐播放连接
  let musicLinkData=await request('/song/url',{id:musciId})
   musciLink=musicLinkData.data.data[0].url;
  this.setData({
    musciLink
  })
}


  //创建控制音乐播放的实例
  this.backgroundAudioManger.src=musciLink 
  //必填
  this.backgroundAudioManger.title=this.data.song.name


}else{//暂停音乐
  this.backgroundAudioManger.pause();
}
},

//获取音乐详情的功能函数
async getMusicInfo(musicId){
  let songData=await request('/song/detail',{ids:musicId});
  let durationTime =moment(songData.data.songs[0].dt).format('mm:ss')

this.setData({
  song:songData.data.songs[0],
  durationTime
})
wx.setNavigationBarTitle({
  title: this.data.song.al.name
})

},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
this.getMusicInfo(options.id)
//判断当前页面音乐是否在播放
if(appInstance.globalData.isMusicPlay&&appInstance.globalData.musciId==this.data.song.id){
  this.setData({
    isPlay:true
  })
}
//监听音乐播放/暂停
this.backgroundAudioManger=wx.getBackgroundAudioManager();
this.backgroundAudioManger.onPlay(()=>{
  this.changePlayState(true)
  //修改全局音乐播放的状态
  appInstance.globalData.musciId=this.data.song.id
  }
)
this.backgroundAudioManger.onPause(()=>{

      this.changePlayState(false)
  }

)
//监听音乐播放自然结束
this.backgroundAudioManger.onEnded(()=>{
  //自然切换至下一首音乐，并且自动播放
  //自动播放至下一首音乐,并且自动播放
  PubSub.publish("switch",'next')
  this.setData({
    currentTime:"00:00",
    currentWidth:0
  })
})

//监听的音乐时播放的进度
this.backgroundAudioManger.onTimeUpdate(()=>{
  //格式化实时的播放时间
  let currentTime =moment(this.backgroundAudioManger.currentTime*1000).format("mm:ss")
  
  let currentWidth=this.backgroundAudioManger.currentTime/this.backgroundAudioManger.duration*450
  this.setData({
    currentTime,
    currentWidth
  })
})

  },



//修改状态的功能函数
changePlayState(isPlay){
  //修改音乐是否的状态
  this.setData({
    isPlay
  })
    appInstance.globalData.isMusicPlay=isPlay
},
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})